package docente;

import java.util.List;

import docente.Pase.EstadoDelPase;




import excepciones.AlumnoYaInscriptoException;
import excepciones.DocenteYaInscriptoException;
import excepciones.PaseNoTramitadoException;

public class DepartamentoDeDocente {
	private List<Docente> docentes;
	private List<Pase> pases;
	private int contadorDeLegajo = 0;
	
	//PASES
	
	public synchronized void asignarLegajoUnDocente(Docente docente) throws DocenteYaInscriptoException{
		if(docentes.contains(docente))
			throw new DocenteYaInscriptoException();
		else{
			contadorDeLegajo++;
			docente.setLegajo(contadorDeLegajo);
			this.docentes.add(docente);
		}
	}
	
	/**
	 * Tramitar un pase
	 * @param docente
	 * @param areaOrigen
	 * @param areaDestino
	 */
	public void tramitarPase(Docente docente, Area areaOrigen, Area areaDestino, String descripcion){
		Pase pase = new Pase(docente, areaOrigen, areaDestino, descripcion);
		this.pases.add(pase);
	}
	
	public void aprobarPase(Pase pase) throws PaseNoTramitadoException{
		if(this.pases.contains(pase)){
			Docente docente = pase.getDocente();
			docente.entrarArea(pase.getAreaDestino());
			docente.salirArea(pase.getAreaOrigen());
			pase.setEstado(EstadoDelPase.APROBADO);
		}
		else{
			throw new PaseNoTramitadoException();
		}
	}
	
	public void rechazarPase(Pase pase) throws PaseNoTramitadoException{
		if(this.pases.contains(pase))
			pase.setEstado(EstadoDelPase.RECHAZADO);
		else
			throw new PaseNoTramitadoException();
	}

	public List<Docente> getDocentes() {
		return docentes;
	}

	public void setDocentes(List<Docente> docentes) {
		this.docentes = docentes;
	}

	public List<Pase> getPases() {
		return pases;
	}

	public void setPases(List<Pase> pases) {
		this.pases = pases;
	}

	public int getContadorDeLegajo() {
		return contadorDeLegajo;
	}

	public void setContadorDeLegajo(int contadorDeLegajo) {
		this.contadorDeLegajo = contadorDeLegajo;
	}
}
